概述
众所周知,OpenCV 自带预编译的安装包,可是这个预编译的 OpenCV 不能很好地调用 GPU 进行运算,这导致了运行速度总是不尽人意。如果想要 OpenCV 更好地调用 GPU ,这需要在编译 OpenCV 的过程中添加对 CUDA 的支持。
因为CUDA 模块在 opencv_contrib 包中,所以在编译时还需要附带上与 opencv 版本一致的 opencv_contrib 源代码。
开始
需要的工具
- CMake
- Visual Studio
- CUDA
- CUDA Toolkit
- OpenCV 源代码
- opencv_contrib 源代码
具体步骤
-
首先需要把 OpenCV 和 opencv_contrib 的源代码解压在一个不包含中文和空格路径的文件夹内。
-
打开 CMake 把解压后 OpenCV 源代码的路径填在
Where is the source code
选项中。在Where to build the binaries
选项中填入要生成二进制文件的路径,这里推荐在解压源代码的根目录创建一个 "build" 文件夹来作为生成目录。 -
接着点击
Configure
按钮,这时候会弹出一个选项框,这里选择你当前安装的Visual Studio 的版本,然后选择x64,选择完后点击Finish
。 -
接着CMake就会开始第一次源码的配置,这个过程可能会比较慢,这是因为有一些文件需要从外部服务器下载,而这些文件国内的网络可能无法访问,你可以自行下载对应的文件并且在源代码根目录的
.cache
文件夹内自行替换。 -
如果下方日志打印出
Configuring done
,则代表第一次配置完成,接着我们在 CMake 的配置框中勾选:BUILD_CUDA_STUBS
OPENCV_DNN_CUDA
WITH_CUDA
BUILD_opencv_world
-
这四个选项,接着在
OPENCV_EXTRA_MODULES_PATH
中填入 opencv_contrib 源代码根目录文件夹modules
的路径 。如果不需要的话,python 和 java 的绑定也可以取消勾选 -
再次点击
Configure
按钮开始第二次配置,等配置完成后,在配置中找到CUDA_ARCH_BIN
的选项在里面填入你当前电脑显卡的计算系数。可以在这里找到对应显卡的算力:Nvidia显卡算力表
注意一定只选择你当前显卡的算力,不要填写多个,否则等到了编译阶段,它会把每个架构都编译一遍。
-
等上述步骤都做完后就可以点击
Generate
按钮生成可以编译的文件,等生成完成后就可以点击Open Project
按钮进入 Visual Studio 开始最终的编译阶段了。 -
在 Visual Studio 中,先将上方的 Debug 下拉框选为 Release ,接着在右侧资源管理器中找到 CMakeTargets 文件夹中的 ALL_BUILD,对其右键点击生成。等漫长的生成结束后在对着 INSTALL 右键选择“仅用于项目”——“仅生成INSTALL”。
-
等待编译结束后,编译好的文件就在
build
文件夹的install
文件夹中。